|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Решение:Существует множество вариантов решения этой задачи. Примеры - ниже. Так может выглядеть решение с обработкой кода ошибки и повторным вызовом функцией самой себя: Option Explicit Private Sub CommandButton1_Click() Call subPrepare End Sub
Public Sub subPrepare() Dim nReturnCode As Integer Dim nAnswer As Integer
nReturnCode = fDiv()
Select Case nReturnCode Case 1 MsgBox ("Делить на ноль нельзя!") nAnswer = MsgBox("Повторить?", vbYesNo) If nAnswer = vbYes Then Call subPrepare Else Application.Quit End If Case 2 MsgBox("Нужно число!") nAnswer = MsgBox("Повторить?", vbYesNo) If nAnswer = vbYes Then Call subPrepare Else Application.Quit End If Case 3 MsgBox ("Неизвестная ошибка") nAnswer = MsgBox("Повторить?", vbYesNo) If nAnswer = vbYes Then Call subPrepare Else Application.Quit End If End Select End Sub
Function fDiv() On Error Resume Next Dim nNum1 As Integer Dim nNum2 As Integer Dim nResult As Integer
nNum1 = InputBox("Введите первое число") nNum 2 = InputBox ("Введите второе число")
nResult = CInt(nNum1) / CInt(nNum2)
Select Case Err.Number Case 0 Range("B1").Value = nResult fDiv = 0 Case 11 fDiv = 1 Case 13 fDiv = 2 Case Else fDiv = 3 End Select End Function
А так - решение с обработкой кода ошибки и циклом:
Private Sub CommandButton1_Click() Dim nNum1 As Variant Dim nNum2 As Variant Dim nResult As Integer Dim nError As Integer
Do nNum1 = InputBox("Введите первое число:") On Error Resume Next nError = CInt(nNum1) If Err.Number = 13 Then MsgBox ("Нужно число") nNum1 = "" End If On Error GoTo 0 Loop While (nNum1 = "") Do nNum2 = InputBox("Введите второе число:") On Error Resume Next nError = CInt(nNum2) If Err.Number = 13 Then MsgBox ("Нужно число") nNum2 = "" ElseIf nNum2 = 0 Then MsgBox ("Делить на ноль нельзя!") nNum2 = "" End If On Error GoTo 0 Loop While (nNum2 = "")
nResult = nNum1 / nNum2
Range("B1").Value = nResult
End Sub
Еще один вариант решения вообще не допускает возникновения ошибок: Private Sub CommandButton1_Click() Dim nNum1 As Variant Dim nNum2 As Variant Dim nResult As Integer
Do nNum 1 = InputBox ("Введите первое число:") If IsNumeric(nNum1 & "") Then Exit Do MsgBox "Нужно число" Loop
Do nNum2 = InputBox ("Введите второе число:") If IsNumeric(nNum2 & "") Then If Int(nNum2) <> 0 Then Exit Do MsgBox "Делить на ноль нельзя!" Else MsgBox "Нужно число" End If Loop
nResult = nNum1 / nNum2
Range("B1").Value = nResult
End Sub
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Получить этот учебник в формате PDF (Acrobat Reader) или DOC (Microsoft Word) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||